import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
# 1、准备数据
X = np.arange(-4,4,0.25)
Y = np.arange(-4,4,0.25)
X,Y = np.meshgrid(X,Y)
R = np.sqrt(X**2+Y**2)
Z = np.sin(R)
# 2、绘制图形
fig = plt.figure()
ax = Axes3D(fig)
"""
做出一个三维曲面，并将一个 colormap rainbow 填充颜色，
之后将三维图像投影到 XY 平面上做一个等高线图。
其中，rstride 和 cstride 分别代表 row 和 column 的跨度。
跨度越小，图形上的网格越密集
"""
ax.plot_surface(X,Y,Z,rstride=1,cstride=1,cmap=plt.get_cmap('rainbow'))
# 添加投影
ax.contourf(X,Y,Z,adir='z',offset=-1,cmap=plt.get_cmap('rainbow'))
plt.show()